#include "roleman.h"

void Roleman::HeroInit(char name[20],CGameMap & gamemap){//玩家初始化
strcpy(m_Name,name);
    m_Lv = 1;
    m_Hp= m_MaxHp = m_Lv *100;
    m_Att = m_Lv * 10;
    m_Def = m_Lv * 2;
    m_Exp =0;
    m_BlueKey = 1;
    m_RedKey = 1;
    m_YellowKey = 1;
    floor=0;

/// /初始化玩家坐标
for (int i = 0; i< 18; i++){
  for (int j = 0; j< 18;j++){
    if(9==gamemap.GetMap([i][j]){//9是玩家id
    m_PosX = i;
            m_PosY = j;
            return;
    }
  }
}

/*0地面
 * 1墙
 * 2公主
 * 3岩浆
 * 6铁剑
 * 4上楼梯
 * 5下楼梯
 * 9玩家
 * 14-19红蓝黄钥匙门
 * 24-28 hp/经验药水 02宝石、52宝石、14宝石
 * >=40都是怪物
 */

void Roleman::HeroMove(CGameMap &gamemap) {
            //玩家移动
                int Input = getch();
                int OffSetX = 0, OffSetY = 0;
                switch (Input)
                {
                case 's':
                case 'S':
                    OffSetY = 1;
                    break;
                case 'w':
                case 'W':
                    OffSetY = -1;
                    break;
                case 'd':
                case 'D':
                    OffSetX = 1;
                    break;
                case 'a':
                case 'A':
                    OffSetX = -1;
                    break;
                default:
                    break;
                }
                if (0 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY+OffSetY])//地面
                {
                    //修改地图的数据
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                }
            if (1 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY+OffSetY]||
                3== gamemap.GetMap()[m_PosX + OffSetX][m_PosY+OffSetY])//墙和岩浆
    {
            }
                else if (6 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY]||)//铁剑
            {
                gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                gamemap.GetMap()[m_PosX][m_PosY] = 0;
                m_PosX += OffSetX;
                m_PosY += OffSetY;
                     if(HaveSword()==0){
                     m_Sword=10;
                     m_Att+=m_Sword;}
                     else{m_Att=m_Att+10-m_Sword;m_Sword=10;}}

                else if (14 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//红钥匙
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_RedKey += 1;
                }
                else if (15 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//蓝钥匙
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_BlueKey += 1;
                    /*char *m=intToWchar(m_BlueKey);
                    outtextxy(32 * 18 + 32 * 3, 32 * 2, *m);*/
                }
                else if (16 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//黄钥匙
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_YellowKey += 1;
                }
                else if (17 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//红门
            {
                if (0 != m_RedKey)
                {
                gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                gamemap.GetMap()[m_PosX][m_PosY] = 0;
                //修改玩家的坐标
                m_PosX += OffSetX;
                m_PosY += OffSetY;
                m_RedKey -= 1;
                }

            }
                else if (18 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//蓝门
            {
                if (0 != m_BlueKey)
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_BlueKey -= 1;
                }

            }
                else if (19 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//黄门
            {
                if (0 != m_YellowKey)
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_BlueKey -= 1;
                }

            }
                else if (24 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//hp药水
                {
                        m_Hp += 100;

                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;

                }
                else if (25 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//经验药水
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    if ((m_Exp + 20) >= 100)
                    {
                        m_Lv += 1;
                        m_Exp = 100-m_exp+20;
                    }
                    else
                    {
                        m_Exp += 20;
                    }

                }
                else if (26 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//防御宝石
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Def += 2;
                }
                else if (27 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//红宝石
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Att += 5;
                    m_Def += 2;
                }
                else if (28 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//蓝宝石
                {
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;
                    m_Att += 1;
                    m_Def += 4;
                }
                else if (2 == gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//公主
            {

                //修改地图的数据
                gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                gamemap.GetMap()[m_PosX][m_PosY] = 0;
                //修改玩家的坐标
                m_PosX += OffSetX;
                m_PosY += OffSetY;
               // Sleep(1000);
               //outtextxy(32 * 1, 32 * 19, "      游戏胜利       ");
            }
                else if (39<gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY])//怪物
            {
                // 实现战斗的逻辑
                int num=gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY];
                HeroFight(num);
                    outtextxy(32 * 1, 32 * 19, "                                  ");
                    outtextxy(32 * 19, 32 * 8, "                         ");
                    //修改地图的数据
                    gamemap.GetMap()[m_PosX + OffSetX][m_PosY + OffSetY] = 9;
                    gamemap.GetMap()[m_PosX][m_PosY] = 0;
                    //修改玩家的坐标
                    m_PosX += OffSetX;
                    m_PosY += OffSetY;

            }
  }
            void HeroFight(const int &id)

            ;

